package com.tjetc.dao;

import com.tjetc.common.JsonResult;
import com.tjetc.entity.Travelogue;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TravelogueMapper {


  List<Travelogue> selectAll(Long is_editor);


  Travelogue selectById(@Param("travelogueId") Long travelogueId);

  int insert(@Param("travelogue") Travelogue travelogue);

  // 添加游记方法
  int addNewTravelogue(Travelogue travelogue);

  int update(@Param("travelogue") Travelogue travelogue);

  int createTravelogueRecord(Travelogue travelogue);


  int deleteById(@Param("travelogueId") Long travelogueId);

  List<Travelogue>  getTop(Integer l);

  List<Travelogue> searchTravelogue(String s);

  /**
   * 根据城市的景点ID查询游记
   * @param spotIds 景点ID列表
   * @param isFeatured 是否精选
   * @param isEditor 是否编辑推荐
   * @param sortBy 排序字段
   * @return 游记列表
   */
  List<Travelogue> findByCitySpots(
      @Param("spotIds") List<Long> spotIds,
      @Param("isFeatured") Boolean isFeatured,
      @Param("isEditor") Boolean isEditor,
      @Param("sortBy") String sortBy
  );
  
  /**
   * 统计城市景点相关游记总数
   * @param spotIds 景点ID列表
   * @param isFeatured 是否精选
   * @param isEditor 是否编辑推荐
   * @return 游记总数
   */
  int countByCitySpots(
      @Param("spotIds") List<Long> spotIds,
      @Param("isFeatured") Boolean isFeatured,
      @Param("isEditor") Boolean isEditor
  );

  /**
   * 根据ID查询游记及其作者信息
   * @param travelogueId 游记ID
   * @return 包含作者信息的游记对象
   */
  com.tjetc.common.vo.user.TravelogueView selectAllArticalById(@Param("travelogueId") Long travelogueId);
}
